package main

import "fmt"

func main() {
	b := make(map[int]string)
	// 增加
	b[1] = "张三"
	b[2] = "李四"
	fmt.Println(b) // map[1:张三 2:李四]
	// 修改
	b[2] = "王五"
	fmt.Println(b) // map[1:张三 2:王五]

	// 删除,使用delete函数
	delete(b, 2)
	fmt.Println(b) // map[1:张三]
	// 删除不存在的key,也不会报错
	delete(b, 3)
	fmt.Println(b) // map[1:张三]

	// 查找,返回值,是否存在
	value, flag := b[1]
	fmt.Println(value) // 张三
	fmt.Println(flag)  // true

	value2, flag2 := b[3]
	fmt.Println(value2) // 空字符
	fmt.Println(flag2)  // false

	// 遍历map
	for k, v := range b {
		fmt.Printf("key:%v value:%v \n", k, v)
	}
	// 打印:
	// key:1 value:张三

	// 增加点难度
	a := make(map[string]map[int]string)
	// 给这个map赋值
	a["班级1"] = make(map[int]string, 3)
	a["班级1"][1] = "张三"
	a["班级1"][2] = "李四"
	a["班级1"][3] = "王五"

	a["班级2"] = make(map[int]string, 3)
	a["班级2"][11] = "赵六"
	a["班级2"][22] = "王彪"
	a["班级2"][33] = "汪汪"

	for k1, v1 := range a {
		fmt.Println(k1)
		for k2, v2 := range v1 {
			fmt.Printf("学生学号:%v, 学生姓名:%v \n", k2, v2)
		}
		fmt.Println()
	}
	// 打印:
	//班级2
	//学生学号:11, 学生姓名:赵六
	//学生学号:22, 学生姓名:王彪
	//学生学号:33, 学生姓名:汪汪
	//班级1
	//学生学号:1, 学生姓名:张三
	//学生学号:2, 学生姓名:李四
	//学生学号:3, 学生姓名:王五
}
